package com.sjb.sixteen_journey_backend.entity;

import com.baomidou.mybatisplus.annotation.*;

import java.time.LocalDateTime;
import java.io.Serializable;
import java.util.List;

import com.fasterxml.jackson.annotation.JsonIgnore;
import com.sjb.sixteen_journey_backend.entity.vo.UserBaseMsgVo;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

/**
 * <p>
 * 评论列表
 * </p>
 *
 * @author jcz
 * @since 2024-07-23
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("comment")
public class Comment implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 评论列表id
     */
    @TableId(value = "comment_id", type = IdType.AUTO)
    private Integer commentId;

    /**
     * 用户id
     */
    @TableField("user_id")
    @JsonIgnore
    private Integer userId;

    @TableField(exist = false)
    private UserBaseMsgVo user;

    /**
     * 板块状态：0此刻，1机票晒单，2酒店晒单，3保险理赔晒单，4其他晒单，5爆料
     */
    @TableField("module_status")
    private Integer moduleStatus;

    /**
     * 6个板块id:my_time_id,air_ticket_id,hotel_ticket_id,insurance_ticket_id,others_ticket_id,share_thing_id
     */
    @TableField("module_id")
    private Integer moduleId;

    /**
     * 评论内容
     */
    @TableField("content")
    private String content;

    /**
     * 评论时间
     */
    @TableField(value = "postdate",fill = FieldFill.INSERT)
    private LocalDateTime postdate;

    /**
     * 被喜欢
     */
    @TableField("be_liked")
    private Integer beLiked;



    /**
     * 回复对象
     * 说明 如果是直接发布评论，则为0
     * 如果是回复或者在父级评论下发布评论，则target_id为父级评论的user_id
     */
    @TableField("target_id")
    @JsonIgnore
    private Integer targetId;

    @TableField(exist = false)
    private UserBaseMsgVo targetUser;


    /**
     * 父级评论id
     * 说明 如果是直接发布评论，则为0
     * 如果是回复或者在父级评论下发布评论，则parents_id为父级评论的comment_id
     */
    @TableField("parents_id")
    private Integer parentsId;


    @TableField(exist = false)
    private List<Comment> children;


}
